package com.smdp.utils;

/**
 * Redis常量
 */
public class RedisConstants {
    /**
     * 用户业务相关常量，登录、修改密码
     */
    // 登录验证码key前缀
    public static final String LOGIN_CODE_KEY = "login:code:";
    // 修改密码验证码key前缀
    public static final String CHANGE_PASSWORD_CODE_KEY = "password:code:";
    // 验证码过期时间（分钟），登录验证码和修改密码验证码共用
    public static final Long LOGIN_CODE_TTL = 2L;
    // 用户登录key前缀
    public static final String LOGIN_USER_KEY = "login:token:";
    // 用户登录过期时间（秒）
    public static final Long LOGIN_USER_TTL = 36000L;

    /**
     * 我的关注博客页面每页显示数量
     */
    public static final Integer FOLLOW_PAGE_SIZE = 5;

    /**
     * 店铺缓存相关常量
     */
    // 店铺缓存key前缀
    public static final String CACHE_SHOP_KEY = "cache:shop:";
    // 店铺缓存过期时间（秒）
    public static final Long CACHE_SHOP_EXPIRE_TIME = 30L;
    // 店铺缓存更新锁的key前缀
    public static final String SHOP_LOCK_KEY = "lock:shop:";

    /**
     * 博客点赞key前缀
     */
    public static final String BLOG_LIKED_KEY = "blog:liked:";

    /**
     * 用户收件箱key前缀
     */
    public static final String FEED_KEY = "feed:";
    /**
     * Redis的GeoSearch的key前缀
     */
    public static final String SHOP_GEO_KEY = "shop:geo:";
    /**
     * 用户签到的key前缀
     */
    public static final String USER_SIGN_KEY = "sign:";

    /**
     * 秒杀相关常量
     */
    // 秒杀订单消息队列名，在秒杀lua脚本中需要使用相同的队列名
    public static final String SECKILL_ORDER_MESSAGE_QUEUE = "stream.orders";
    // 秒杀库存key前缀，在秒杀lua脚本中需要使用相同的key前缀
    public static final String SECKILL_STOCK_KEY = "seckill:stock:";
    // 已秒杀用户Set的key前缀，仅在lua脚本中使用，Java文件中未使用
    public static final String SECKILL_ORDER_KEY = "seckill:order:";
    // 秒杀通知互斥锁的key前缀
    public static final String SECKILL_SCHEDULE_LOCK_KEY = "lock:schedule:";
    // 创建秒杀订单互斥锁的key前缀
    public static final String SECKILL_ORDER_LOCK_KEY = "lock:seckill:";
}
